﻿using Common.Contract;
using Common.Contract.ProductHandbook;
using Common.Contract.ProductHandbook.Request;
using Common.Contract.ProductHandbook.Response;
using CrossSelling.Core.ServiceCommand;
using CrossSelling.Core.ServiceCommand.Admin;
using CrossSelling.Service.Core;

namespace CrossSelling.Service
{
    public class ProductHandbookService : ServiceBase, IProductHandbook
    {
        public RetrieveProductHandbookCategoryResponse RetrieveProductHandbookCategory(RetrieveProductHandbookCategoryRequest request)
        {
            return new RetrieveProductHandbookCategoryServiceCommand(Provider).Execute(request);
        }
        public RetrieveProductHandbookCategoryResponse RetrieveProductProgramHandbookCategory(RetrieveProductHandbookCategoryRequest request)
        {
            return new RetrieveProductProgramHandbookCategoryServiceCommand(Provider).Execute(request);
        }
        public RetrieveProductHandbookProductDetailByProductIdResponse RetrieveProductHandbookProductDetailByProductId(RetrieveProductHandbookProductDetailByProductIdRequest request)
        {
            return new RetrieveProductHandbookProductDetailByProductIdServiceCommand(Provider).Execute(request);
        }
        public ResponseRecord UpdateProductHandbookProductDetail(UpdateProductHandbookProductDetailRequest request)
        {
            return new UpdateProductHandbookProductDetailServiceCommand(Provider).Execute(request);
        }
        public RetrieveChecklistDocumentByProductResponse RetrieveChecklistDocumentByProduct(RetrieveChecklistDocumentByProductRequest request)
        {
            return new RetrieveChecklistDocumentByProductServiceCommand(Provider).Execute(request);
        }
        public RetrieveViewChecklistCustomerByCcidResponse RetrieveViewChecklistCustomerByCcid(RetrieveViewChecklistCustomerByCcidRequest request)
        {
            return new RetrieveViewChecklistCustomerByCcidServiceCommand(Provider).Execute(request);
        }
        public RetrieveChecklistQuestionByProductResponse RetrieveChecklistQuestionByProduct(RetrieveChecklistQuestionByProductRequest request)
        {
            return new RetrieveChecklistQuestionByProductServiceCommand(Provider).Execute(request);
        }
        public RetrieveChecklistCustomerByDaoResponse RetrieveChecklistCustomerByDao(RetrieveChecklistCustomerByDaoRequest request)
        {
            return new RetrieveChecklistCustomerByDaoServiceCommand(Provider).Execute(request);
        }
        public ResponseRecord UpdateCustomerChecklist(UpdateCustomerChecklistRequest request)
        {
            return new UpdateCustomerChecklistServiceCommand(Provider).Execute(request);
        }
        public RetrieveChecklistCustomerByCcidResponse RetrieveChecklistCustomerByCcid(RetrieveChecklistCustomerByCcidRequest request)
        {
            return new RetrieveChecklistCustomerByCcidServiceCommand(Provider).Execute(request);
        }
        public ResponseRecord UpdateQuestion(UpdateChecklistQuestionRequest request)
        {
            return new UpdateQuestionServiceCommand(Provider).Execute(request);
        }
        public ResponseRecord UpdateDocument(UpdateDocumentChecklistRequest request)
        {
            return new UpdateDocumentServiceCommand(Provider).Execute(request);
        }
        public ResponseRecord UpdateChecklistRule(UpdateChecklistRuleRequest request)
        {
            return new UpdateChecklistRuleServiceCommand(Provider).Execute(request);
        }
        public ResponseRecord UpdateChecklistRuleHideDoc(UpdateChecklistRuleHideDocRequest request){
            return new UpdateChecklistRuleHideDocServiceCommand(Provider).Execute(request);
        }
            
        public RetrieveChecklistProductInfoResponse RetrieveChecklistProductInfo(RetrieveChecklistProductInfoRequest request)
        {
            return new RetrieveChecklistProductInfoServiceCommand(Provider).Execute(request);
        }
        public RetrieveDocumentInfoByDocIdResponse RetrieveDocumentInfoByDocId(RetrieveDocumentInfoByDocIdRequest request)
        {
            return new RetrieveDocumentInfoByDocIdServiceCommand(Provider).Execute(request);
        }
        public RetrieveChecklistRulesByProductResponse RetrieveChecklistRulesByProduct(RetrieveChecklistRulesByProductRequest request)
        {
            return new RetrieveChecklistRulesByProductServiceCommand(Provider).Execute(request);
        }
        public RetrieveChecklistHideDocResponse RetrieveChecklistHideDocByProduct(RetrieveChecklistHideDocRequest request)
        {
            return new RetrieveChecklistHideDocByProductServiceCommand(Provider).Execute(request);
        }
        public RetrieveRuleChecklistByIdResponse RetrieveRuleChecklistById(RetrieveRuleChecklistByIdRequest request)
        {
            return new RetrieveRuleChecklistByIdServiceCommand(Provider).Execute(request);
        }
        public ResponseRecord AddProductChecklistInfo(AddProductInfoRequest request)
        {
            return new AddProductChecklistInfoServiceCommand(Provider).Execute(request);
        }
        public ResponseRecord AddProductInfo(AddProductInfoRequest request)
        {
            return new AddProductInfoServiceCommand(Provider).Execute(request);
        }
        public RetrieveRuleHideDocByIdResponse RetrieveRuleHideDocById(RetrieveRuleHideDocByIdRequest request)
        {
            return new RetrieveRuleHideDocByIdServiceCommand(Provider).Execute(request);
        }
        public RetrieveSaleContestProgramResponse RetrieveSaleContestProgram(RetrieveSaleContestProgramRequest request)
        {
            return new RetrieveSaleContestProgramServiceCommand(Provider).Execute(request);
        }
        public RetrieveSaleContestInfoBySaleContestIdResponse RetrieveSaleContestInfoBySaleContestId(RetrieveSaleContestInfoBySaleContestIdRequest request)
        {
            return new RetrieveSaleContestInfoBySaleContestIdServiceCommand(Provider).Execute(request);
        }
    }
}
